Immagina di essere un architetto. Invece di disegnare un piano fisso per una singola casa in mattoni, progetti un modello principale progetto in grado di adattarsi al legno, all'acciaio o al vetro. In C++, questo è Programmazione Generica.
1. Il Meccanismo del Progetto
Un elenco di parametri template (ad esempio, template <typename T>) introduce dei segnaposto chiamati parametri di tipo template. Questi agiscono come variabili per i tipi. Ad esempio, in template <typename T> ostream &print(ostream &os, const T &obj), T viene determinato solo quando la funzione viene chiamata.
2. Istanziamento
Il compilatore non compila il template stesso in codice macchina. Invece, istanziamento avviene: il compilatore genera una versione specifica del codice solo quando viene fornito un argomento template è fornito. A causa di ciò, le definizioni devono solitamente risiedere nei file di intestazione.
3. Scrivere Codice Indipendente dal Tipo
Per massimizzare la riutilizzabilità, segui la Migliore Pratica: minimizza i requisiti. Scrivere il codice utilizzando solo l'operatore < operatore (tramite less<T>) riduce i requisiti sui tipi rispetto all'uso di >, <=, e >=. La validazione è spesso ritardata; il compilatore generalmente non riesce a trovare molti errori allo stadio della compilazione del template stesso; la maggior parte appare durante l'istanziamento.